// pages/foodDetail/foodDetail.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    foodItem: null,    // 当前美食详情数据
    isFold: true,      // 推荐地点折叠状态
    foldedPlaces: [],   // 折叠后的地点列表
    foodId:''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.data.foodId = options.id
    this.getFoodDetail(options.id)  // 改用云函数获取数据
    // 页面加载时，根据isFold的值设置foldedPlaces
    // this.updateFoldedPlaces();
  },
  

  // 获取美食详情云函数
  getFoodDetail(id) {
    wx.showLoading({ title: '加载中' })
    console.log('111');
    wx.cloud.callFunction({
      name: 'getFoodDetail',
      data: { _id: id },
      success: res => {
        console.log('res.result',res.result);
        if (res.result) {
          
          this.setData({
            foodItem: {
              ...res.result,
              // food_intro: this.formatIntro(res.result.food_intro)
            }
          }, () => this.updateFoldedPlaces())
        }
        wx.hideLoading()
      },
      fail: err => {
        console.error('数据获取失败', err)
        wx.hideLoading()
      }
    })
  },

   // 控制收藏
  async handleLike() {
    if (!this.data.foodItem) return
    
    // 优先检查本地登录状态
      const localUser = wx.getStorageSync('userinfo')
      if (!localUser?.nickName) {
        wx.showToast({
          title: '🌟 请登录后继续操作',
          icon: 'none',
          duration: 1000,
          mask: true
        });
        // 第二步：异步提示流程
        setTimeout(() => {
          // 触觉反馈
          wx.vibrateShort({ type: 'heavy' });

          // 第三步：跳转预加载提示
          wx.showLoading({
            title: '正在前往登录页...',
            mask: true
          });

          // 页面路径处理（保持原逻辑）
          const pages = getCurrentPages();
          const currentPage = pages[pages.length - 1];
          const path = currentPage.route;
          const options = currentPage.options;

          const params = [];
          for (const key in options) {
            params.push(`${key}=${encodeURIComponent(options[key])}`);
          }
          const returnUrl = `/${path}${params.length ? '?' + params.join('&') : ''}`;

          // 存储跳转信息
          wx.setStorageSync('returnUrl', {
            path: returnUrl,
            isTab: ['pages/index/index', 'pages/my/my', 'pages/map/map'].includes(path)
          });

          // 第四步：延迟跳转（保证提示可见）
          setTimeout(() => {
            wx.hideLoading();
            wx.switchTab({ url: '/pages/my/my' });
          }, 1500); // 控制加载提示持续时间

        }, 2500); // 等待toast显示完成
        return;    
       
      }
   
    try {
      wx.showLoading({ title: '处理中...', mask: true })
      
      // 直接调用独立事务云函数
      const { result } = await wx.cloud.callFunction({
        name: 'saveCollectList',  // 需要新建的云函数
        data: {
          action: this.data.foodItem.islike ? 'unfollow' : 'follow',
          poiId: this.data.foodItem._id,
          poiData: {
            name: this.data.foodItem.food_name,
            photo: this.data.foodItem.food_image,
            type:'food',
          }
        }
      })
  
      if (result.code === 0) {
        this.setData({
          'foodItem.islike': !this.data.foodItem.islike
        }, () => {
          wx.showToast({
            title: this.data.foodItem.islike ? '已收藏' : '已取消',
            icon: 'success'
          })
        })
      } else {
        throw new Error(result.msg)
      }
      
    } catch (err) {
      console.error('操作失败:', err)
      wx.showToast({ title: err.message || '操作失败', icon: 'none' })
    } finally {
      wx.hideLoading()
    }
  },



  // 地图导航
  onGoto: function (e) {
    // 获取id
    const id = e.currentTarget.dataset.id;
    console.log('id', id)
    // 获取id对应的数据
    const goToPlace = this.data.foodItem.places.find(item => item.place_id == id)
    // 获取经纬度
    wx.request({
      url: 'https://restapi.amap.com/v3/geocode/geo',
      data: {
        address: goToPlace.place_detail,
        key: '79d942198d3025c5e6c0f96109b34e68'
      },
      success(res) {
        // 首先检查返回状态
        if (res.data.status !== '1') {
          console.error('API返回错误:', res.data.info);
          return;
        }
        // 然后检查geocodes是否存在且有数据
        if (!res.data.geocodes || res.data.geocodes.length === 0) {
          console.error('未找到地理编码结果');
          return;
        }
        // 安全获取location
        const locationStr = res.data.geocodes[0].location;
        const [longitude, latitude] = locationStr.split(',');
        console.log('经度:', longitude);
        console.log('纬度:', latitude);

        // 开始导航
        if (longitude && latitude) {
          console.log('goto');
          wx.openLocation({
            latitude: Number(latitude),
            longitude: Number(longitude),
            name: goToPlace.place_name,
            address: goToPlace.place_detail,
            success: function(res) {
              console.log('openLocation success:', res);
            },
            fail: function(err) {
              console.error('openLocation fail:', err);
            }
          });
        }
      },
      fail(err) {
        console.error('请求失败:', err);
      }
    })
  },
  // 控制推荐地点的折叠
  handleFold: function () {
    // 用户点击折叠/展开按钮时调用
    this.setData({
      isFold: !this.data.isFold // 切换isFold的值
    }, () => {
      this.updateFoldedPlaces(); // 更新foldedPlaces数组
    });
    console.log("isFold", this.data.isFold)
  },

  // 更新地点数据
  updateFoldedPlaces: function () {
    const {
      places,
      isFold
    } = this.data;
    if (!this.data.foodItem || !this.data.foodItem.places) {
      console.warn('foodItem or places is missing');
      return;
    }
    let foldedPlaces = isFold ? this.data.foodItem.places.slice(0, 2) : this.data.foodItem.places;
    this.setData({
      foldedPlaces: foldedPlaces
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})